1. Technical Field
The present invention relates generally to resource provisioning and auto-provisioning systems, and in particular to a method, system, and product for defining and managing provisioning states of resources in such systems.
2. Description of Related Art
As businesses attempt to respond more quickly to changing needs and circumstances, there is an increased need for the capability to quickly reallocate resources used in information technology (IT). It is envisioned in one model of computer services that business will be able to contract with an IT provider for services. In this model, a provisioning organization will provide computer hardware and software that can be flexibly interconnected to serve a client as long as necessary, but can then be released back to a general pool, or pools, when the need has passed. The provisioning organization can provide equipment and software to a client's site or provide the services through connections to the needed resources at another site. Once the resource is released back to the general pool, or pools, systems can be reconfigured to meet the needs of the next client as necessary.
It is known that the processes associated with adding or reallocating IT resources can be lengthy and tedious. Ideally, an automatic provisioning (or auto-provisioning) system can allocate and configure computing resources with little or no human intervention, such that these resources can be placed into, or removed from, operation quickly and efficiently. Operations personnel can then be relieved of much of the burden of managing an infrastructure consisting of computing resources, making operations more cost effective. Auto-provisioning can also facilitate a more fluid, timely and automated allocation and configuration of resources, allowing management to use more variable and profitable pricing strategies, such as a metered utility service provider might use.
In a provisioning system, resources can be divided into a number of resource types. Resources may be physical resources such as servers and switch ports, logical resources such as logical partitions of a server and IP addresses, or virtual resources such as virtual local area networks (VLANs).
Instances of resources can be categorized by resource types. For example, a server is a type of resource. The particular server having serial number 123456 is a particular individual server and is referred to herein as an “instance” of a server or a “particular” server. Herein, the term “resource” should be understood to mean resource instance.
Furthermore, instances can be grouped by some set of attributes of the resource instances themselves. For example, server instances can be grouped into disjoint subsets by server model number which reflects an implementation specification of servers. A set of resource instances can then be described by its type and an implementation specification. In this way, a resource type contains a number of implementation specifications each of which contains a number of resource instances.
For another example, software is a resource type. Software can be further divided into sub-types by their capability specification such as operating system software to control system components and database software to manage a data repository. In this preferred embodiment, the terms implementation specification, capability specification, specification, and resource specification are used inter-changeably to refer to sub-typing of a resource type.
Provisioning of resources of different types is very complex in a provisioning system. Therefore, a need exists for a method, system, and computer program product in a provisioning data processing system for defining and managing provisioning states for many different resource types such that a resource of a particular type transitions through that type's provisioning states using a set of tasks or workflow processes during the provisioning of the resource.